/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entidades;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;

/**
 * 
 * @author thiago, natan
 */
@Entity
@Table(name = "Avaliacao")
public class Avaliacao implements Serializable {

	private static final long serialVersionUID = 1L;

//	@EmbeddedId
//	private pkEntidades.AvaliacaoPK chave;
	@Id
    @GeneratedValue(strategy = GenerationType.AUTO)
	private long idAvaliacao;
	@ManyToOne(fetch = FetchType.EAGER)
	private Fornecedor fornecedor;
	@OneToOne(fetch = FetchType.EAGER)
	private Pedido pedido;
	@ManyToOne
	private Usuario criadoPor;
	@Temporal(javax.persistence.TemporalType.DATE)
	private Date dataAvaliacao;
	private String horaAvaliacao;
	private int condicaoPagamento;
	private int valor;
	private int comunicacao;
	private int prazoEntrega;
	private int negociacao;
	private int conformidade;
	private String informacoesGerais;
	private String obsCondicaoPagamento;
	private String obsValor;
	private String obsComunicacao;
	private String obsPrazoEntrega;
	private String obsNegociacao;
	private String obsConformidade;	

	/**
	 * Construtor Vazio
	 */
	public Avaliacao() {
	}

	/**
	 * Construtor
	 */
	public Avaliacao(Fornecedor fornecedor, Pedido pedido, Usuario criadoPor, Date dataAvaliacao,
			String horaAvaliacao, int condicaoPagamento, int valor,
			int comunicacao, int prazoEntrega, int negociacao,
			int conformidade, String informacoesGerais,
			String obsCondicaoPagamento, String obsValor,
			String obsComunicacao, String obsPrazoEntrega,
			String obsNegociacao, String obsConformidade) {

//		chave = new AvaliacaoPK();
//		chave.setCnpjFornecedor(cnpjFornecedor);
//		chave.setIdPedido(pedido.getIdPedido());
		this.fornecedor = fornecedor;
		this.pedido = pedido;
		this.criadoPor = criadoPor;
		this.dataAvaliacao = dataAvaliacao;
		this.horaAvaliacao = horaAvaliacao;
		this.condicaoPagamento = condicaoPagamento;
		this.valor = valor;
		this.comunicacao = comunicacao;
		this.prazoEntrega = prazoEntrega;
		this.negociacao = negociacao;
		this.conformidade = conformidade;
		this.informacoesGerais = informacoesGerais;
		this.obsCondicaoPagamento = obsCondicaoPagamento;
		this.obsValor = obsValor;
		this.obsComunicacao = obsComunicacao;
		this.obsPrazoEntrega = obsPrazoEntrega;
		this.obsNegociacao = obsNegociacao;
		this.obsConformidade = obsConformidade;

	}

//	public AvaliacaoPK getChave() {
//		return chave;
//	}
//
//	public void setChave(AvaliacaoPK chave) {
//		this.chave = chave;
//	}	
	
	public int getComunicacao() {
		return comunicacao;
	}

	public void setComunicacao(int comunicacao) {
		this.comunicacao = comunicacao;
	}

	public int getCondicaoPagamento() {
		return condicaoPagamento;
	}

	public void setCondicaoPagamento(int condicaoPagamento) {
		this.condicaoPagamento = condicaoPagamento;
	}

	public int getConformidade() {
		return conformidade;
	}

	public void setConformidade(int conformidade) {
		this.conformidade = conformidade;
	}

	public Usuario getCriadoPor() {
		return criadoPor;
	}

	public void setCriadoPor(Usuario criadoPor) {
		this.criadoPor = criadoPor;
	}

	public Date getDataAvaliacao() {
		return dataAvaliacao;
	}

	public void setDataAvaliacao(Date dataAvaliacao) {
		this.dataAvaliacao = dataAvaliacao;
	}

	public String getHoraAvaliacao() {
		return horaAvaliacao;
	}

	public void setHoraAvaliacao(String horaAvaliacao) {
		this.horaAvaliacao = horaAvaliacao;
	}

	public String getInformacoesGerais() {
		return informacoesGerais;
	}

	public void setInformacoesGerais(String informacoesGerais) {
		this.informacoesGerais = informacoesGerais;
	}

	public int getNegociacao() {
		return negociacao;
	}

	public void setNegociacao(int negociacao) {
		this.negociacao = negociacao;
	}

	public String getObsComunicacao() {
		return obsComunicacao;
	}

	public void setObsComunicacao(String obsComunicacao) {
		this.obsComunicacao = obsComunicacao;
	}

	public String getObsCondicaoPagamento() {
		return obsCondicaoPagamento;
	}

	public void setObsCondicaoPagamento(String obsCondicaoPagamento) {
		this.obsCondicaoPagamento = obsCondicaoPagamento;
	}

	public String getObsConformidade() {
		return obsConformidade;
	}

	public void setObsConformidade(String obsConformidade) {
		this.obsConformidade = obsConformidade;
	}

	public String getObsNegociacao() {
		return obsNegociacao;
	}

	public void setObsNegociacao(String obsNegociacao) {
		this.obsNegociacao = obsNegociacao;
	}

	public String getObsPrazoEntrega() {
		return obsPrazoEntrega;
	}

	public void setObsPrazoEntrega(String obsPrazoEntrega) {
		this.obsPrazoEntrega = obsPrazoEntrega;
	}

	public String getObsValor() {
		return obsValor;
	}

	public void setObsValor(String obsValor) {
		this.obsValor = obsValor;
	}

	public int getPrazoEntrega() {
		return prazoEntrega;
	}

	public void setPrazoEntrega(int prazoEntrega) {
		this.prazoEntrega = prazoEntrega;
	}

	public int getValor() {
		return valor;
	}

	public void setValor(int valor) {
		this.valor = valor;
	}

	public long getIdAvaliacao() {
		return idAvaliacao;
	}

	public void setIdAvaliacao(long idAvaliacao) {
		this.idAvaliacao = idAvaliacao;
	}
	
	
	public Pedido getPedido() {
		return pedido;
	}

	public void setPedido(Pedido pedido) {
		this.pedido = pedido;
	}
	
	

	public Fornecedor getFornecedor() {
		return fornecedor;
	}

	public void setFornecedor(Fornecedor fornecedor) {
		this.fornecedor = fornecedor;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + (int) (idAvaliacao ^ (idAvaliacao >>> 32));
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Avaliacao other = (Avaliacao) obj;
		if (idAvaliacao != other.idAvaliacao)
			return false;
		return true;
	}


	
	
}
